package JUC;

class Join_Yeild {


}

class join{ // 使得当前线程可以阻塞其他线程执行；
    // 比如在线程B中调用了线程A的Join()方法，直到线程A执行完毕后，才会继续执行线程B。
    public static void main(String[] args) throws InterruptedException {
        Thread t = new Thread(new Runnable()
        {
            public void run()
            {
                System.out.println("First task started");
                System.out.println("First task completed");
            }
        });
        Thread t1 = new Thread(new Runnable()
        {
            public void run()
            {
                System.out.println("Second task completed");
            }
        });
        //在t执行完毕后t1执行
        t.start(); // Line 15
        t.join(); // Line 16
        t1.start();
    }
}

class yield{ //使用yield()的目的是让相同优先级的线程之间能适当的轮转执行。
    // 但是，实际中无法保证yield()达到让步目的，因为让步的线程还有可能被线程调度程序再次选中。
    public static void main(String[] args) {
        new Thread(()->{
            System.out.println(Thread.currentThread().getName() +
                    "\t我放弃了，让其他线程先执行");
            Thread.currentThread().yield();
            System.out.println("我继续执行");}, "AAA").start();

        System.out.println("我是main线程");

        new Thread(()->{
            System.out.println(Thread.currentThread().getName() +
                    "\t我先执行");
        },"BBB").start();
    }
}
